package JvmMemory;


import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * @BelongsProject: learn-learning-everyday
 * @BelongsPackage: JvmMemory
 * @Author: Chen Wei
 * @CreateTime: 2024-01-18  21:52
 * @Description: TODO
 * @Version: 1.0
 */
@SuppressWarnings("all")
//-Xms60m -Xmx60m -Xmn20m -XX:SurvivorRatio=3 -XX:+UseSerialGC -XX:+PrintGCDetails     //年轻代serial  单线程 老年代 serial old 单线程
//-Xms1g -Xmx1g -Xmn200m -XX:SurvivorRatio=3  -XX:+PrintGCDetails
//-Xms1g -Xmx1g -Xmn200m -XX:SurvivorRatio=3 -XX:+UseParNewGC   -XX:+PrintGCDetails  //ParNew 多线程 parnew 老年代 serial old 单线程 marksweepcompact
//-Xms1g -Xmx1g -Xmn200m -XX:SurvivorRatio=3 -XX:+UseConcMarkSweepGC  -XX:+PrintGCDetails  //ParNew 多线程 parnew 老年代 CMS  多线程 concurrentmarksweep
//css 三色标记算法
//初始标记  标记GC root 能到达的对象 此时会法师stw
//并发标记  标记所有的对象，不需要暂停
//重新标记  标记在上轮并发标记中产生了变化的对象，存在错标漏标  需要重新标记  stw
//并发清楚  清理死亡的对象，不需要暂停

//-Xms1g -Xmx1g -Xmn200m -XX:SurvivorRatio=3 -XX:+UseParallelGC  -XX:+PrintGCDetails  //Parallel Scavenae 多线程 ps_scavenge 老年代 Parallel old  多线程 ps_marksweep
@Slf4j
public class ShowJvmParam {
    public static void main(String[] args) throws Exception {

        jvmTest01();

    }


//    @Test
    public static void jvmTest01() throws Exception {
        int count=0;
        List<byte[]> list=new ArrayList<>();

        while (true){
            System.in.read();

            System.out.println("count="+(++count));
//            TimeUnit.MILLISECONDS.sleep(50);
            list.add(new byte[1024 * 1024 * 1]);
        }

    }
}
